package thread;

import javax.swing.*;
import java.sql.SQLOutput;

/*
 多线程用于并发执行多个任务
 多线程的创建方式有两种：
 1 继承Thread并重写run方法
 */
public class ThreadDemo1 {
    public static void main(String[] args) {
        Thread t1 = new Thread();
        Thread t2 = new Thread();
        t1.start();
        t2.start();
        /*
        启动线程要调用start方法   而直接调用run方法
        当start调用后 线程便纳入到线程调度器中统一管理 低昂第一次获取时间片时
        线程的run方法会被自动调用
         */
    }
}
/*
  第一种创建线程的方式优点是结构简单  适合匿名内部类形式的创建
  缺点  由于Java是单继承的  这导致如过继承了Thread就无法继承其他类了 实际开发中很不方便
   定义线程的同时重写了run方法将线程的认为定义在了线程中  导致线程与任务存在一个必然的偶合关系 不利于线程的重用
 */
class MyThread1 extends Thread{
    public void run(){
        for (int i = 0; i <100; i++) {
            System.out.println("Hello");
        }

    }
}
class MyThread2 extends Thread{
    public  void run(){
        for (int i = 0; i < 100; i++) {
            System.out.println("World");
        }

    }
}
